package com.browsesoft.baseadapter;

import java.util.Hashtable;
import java.util.Iterator;

import org.w3c.dom.Element;

/**
 * 该类实体根据页面变化判断页面的文本框是否位只读
 */
public class HTMLReadOnlyEntityModel extends HTMLLazyEntityModel {
	/**
	 * 
	 */
	private static final long serialVersionUID = -2451214980709623951L;

	// 保存输入框元素
	protected Element text = null;

	/**
	 * 空构造
	 */
	public HTMLReadOnlyEntityModel() {
		super();
	}

	/**
	 * 带属性的构造
	 */
	public HTMLReadOnlyEntityModel(Hashtable ht) {
		super(ht);
	}

	/**
	 * 更新属性
	 * 
	 * @param hashtable
	 *            属性集
	 * @throws Exception
	 */
	public void updateAttributes(Hashtable hashtable) throws Exception {
		super.updateAttributes(hashtable);
		// 判断是否换表
		String isSwitchWatch = (String) hashtable.get("ifchangewatch");
		// 如果换表
		if (isSwitchWatch.equals("换表")) {
			// 输入框可编辑
			this.changeSwicthWatch(true);
		}
		// 否则
		else {
			// 输入框不可编辑
			this.changeSwicthWatch(false);
		}
	}

	/**
	 * 改变要换表的文本框的读写属性
	 * 
	 * @param readOnly
	 *            是否只读
	 */
	private void changeSwicthWatch(boolean readOnly) {
		// 对于所有元素
		Iterator iter = this.getComponent().getDealElements().iterator();
		while (iter.hasNext()) {
			// 得到所有元素
			Element e = (Element) iter.next();
			// 如果是要设置的输入框
			if (e.hasAttribute("switchwatch")) {
				// 如果有switchwatch标志
				if (readOnly) {
					// 在属性中加入readonly="readonly"属性
					e.setAttribute("readonly", "readonly");
				}
				// 否则
				else {
					// 清除readonly属性
					e.removeAttribute("readonly");
				}
			}
		}
	}
}